上篇做到 /ai/next 的時候,我已經可以把任務交給 Gemini,讓它幫我判斷:「我現在最應該先做哪一個?」
今天要先處理一個更基本的問題:AI 到底拿不拿得到資料庫裡的任務?
/tasks/ai-data用原有的task/ai-data 整理得更完整一點,讓它正式成為「給 AI 使用的資料」。
新增
task["deadline"] = task["deadline"].strftime("%Y-%m-%d %H:%M:%S")
它就是把下面這種 Flask 自動把 datetime 轉成 HTTP 日期的格式。
Wed, 09 Sep 2026 23:59:00 GMT
整理成比較乾淨易懂的
2026-09-09 23:59:00
@app.route("/ai/data-test", methods=["GET"])
def ai_data_test():
conn = get_connection()
cursor = conn.cursor(dictionary=True)
cursor.execute("""
SELECT
task_id,
title,
description,
estimated_minutes,
importance,
deadline,
progress,
status
FROM tasks
WHERE status != 'done'
""")
tasks = cursor.fetchall()
for task in tasks:
task["deadline"] = task["deadline"].strftime("%Y-%m-%d %H:%M:%S")
task["remaining_minutes"] = (
task["estimated_minutes"]
* (100 - task["progress"])
/ 100
)
task_json = json.dumps(tasks, ensure_ascii=False)
cursor.close()
conn.close()
prompt = f"""
你是一個待辦事項管理助手。
以下是使用者目前尚未完成的任務:
{task_json}
請閱讀這些任務資料。
目前先不要進行任務排序,
只需要告訴我你是否成功讀取這些任務。
請只回傳一句簡短的中文回答。
"""
response = client.models.generate_content(
model="gemini-3.5-flash-lite",
contents=prompt
)
return {
"answer": response.text
}
這個api要測的不是:「AI 排得好不好?」
而是:「AI 有沒有成功拿到資料?」
這兩件事情要分開測試,比較容易知道哪裡出問題。
得到:
{
"answer": "我已成功讀取這些任務資料。"
}
代表Gemini已經可以成功讀取Flask從資料庫拿取的資料。
今天只是確認:「AI 吃得到資料。」
那明天就可以開始做更完整的串接:MySQL → Flask → Gemini → AI 排序 → 回傳結果
也就是把前幾天做的 /ai/rank,跟今天準備好的資料正式接在一起,這個系統才算真的開始有一點「AI Todo」的樣子。